package mf.com;

import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: lmf
 * @Create: 2024/3/23 17:33
 * Description:  token生成
 */
public class TokenGenerator {
    private static final String SECRET_KEY = "your_secret_key"; // 应该是一个复杂的密钥

    public static String createToken() {
        // 设置token的过期时间
        long expirationTime = System.currentTimeMillis() + 1000 * 60 * 60 * 24; // 1天后过期
        Date expirationDate = new Date(expirationTime);
        Map<String, Object> claims = new HashMap<>();
        JwtBuilder builder = Jwts.builder();
        //使用构造器里的方法封装属性
        String token = builder.
                //封装header属性
                        setHeaderParam("typ","JWT").
                setHeaderParam("alg", "HS256")
                //封装payload里的信息 使用claim方法
                .claim("username", "zhangsan")
                .claim("name", "张三")
                .claim("age", 18)
                .claim("sex", "女")
                //在payLoad中设置一个超时时间  秒   分 时
                .setExpiration(expirationDate)
                .setId("1212121212")
                //构造signature部分
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
                //构造我们的签名 调用compact方法
                .compact();
        System.out.println(token);
        return token;
    }
}
